package dao

import (
	"time"
)

// 这是 OrderGoods 的全局公开dao对象，被service层调用!
var OrderGoodsDao = orderGoodsDao{}

// 订单商品表
// 这是 order_goods表 的实体类,这个实体类中的字段可以减少，但是不能在其基础上增加!
type OrderGoods struct {
	Id             int32     `json:"id" form:"id" v:"id" db:"id"`
	OrderId        int32     `json:"order_id" form:"order_id" v:"order_id" db:"order_id"`                         // 订单表的订单ID
	GoodsId        int32     `json:"goods_id" form:"goods_id" v:"goods_id" db:"goods_id"`                         // 商品表的商品ID
	GoodsName      string    `json:"goods_name" form:"goods_name" v:"goods_name" db:"goods_name"`                 // 商品名称
	GoodsSn        string    `json:"goods_sn" form:"goods_sn" v:"goods_sn" db:"goods_sn"`                         // 商品编号
	ProductId      int32     `json:"product_id" form:"product_id" v:"product_id" db:"product_id"`                 // 商品货品表的货品ID
	Number         int16     `json:"number" form:"number" v:"number" db:"number"`                                 // 商品货品的购买数量
	Price          float64   `json:"price" form:"price" v:"price" db:"price"`                                     // 商品货品的售价
	Specifications string    `json:"specifications" form:"specifications" v:"specifications" db:"specifications"` // 商品货品的规格列表
	PicUrl         string    `json:"pic_url" form:"pic_url" v:"pic_url" db:"pic_url"`                             // 商品货品图片或者商品图片
	Comment        int32     `json:"comment" form:"comment" v:"comment" db:"comment"`                             // 订单商品评论，如果是-1，则超期不能评价；如果是0，则可以评价；如果其他值，则是comment表里面的评论ID。
	AddTime        time.Time `json:"add_time" form:"add_time" v:"add_time" db:"add_time"`                         // 创建时间
	UpdateTime     time.Time `json:"update_time" form:"update_time" v:"update_time" db:"update_time"`             // 更新时间
	Deleted        int8      `json:"deleted" form:"deleted" v:"deleted" db:"deleted" gm:"deleted"`                // 逻辑删除

}

// 注意:这是 OrderGoods 的私有dao对象，只能在dao层内使用!
type orderGoodsDao struct {
	InsertTemplate func(arg OrderGoods) (int64, error)            //插入一条记录
	UpdateTemplate func(arg OrderGoods) (int64, error)            //更新一条记录
	DeleteTemplate func(id int64) (int64, error)                  `args:"id"` //根据传入的主键删除一条记录
	SelectTemplate func(id int64) (OrderGoods, error)             `args:"id"` //根据传入的主键获取一条记录
	List           func(arg OrderGoodsList) ([]OrderGoods, error) //模糊分页查询
}

/*
// 这是 order_goods 表的Postman测试参数
// 该结构体中的字段就是: 前后端交互的json字段!
type OrderGoodsPostman struct {
id
order_id
goods_id
goods_name
goods_sn
product_id
number
price
specifications
pic_url
comment
add_time
update_time
deleted

}*/

// 这是 order_goods 表的批量请求参数
type OrderGoodsReq struct {
	List []OrderGoods `json:"list" form:"list"`
}

// 这是 orderGoodsDao.List()方法的请求参数
type OrderGoodsList struct {
	Page
}
